package com.quickask.service;

import com.quickask.entity.AsknowQuestionSet;

import java.util.List;
import java.util.Map;

/**
 * Created by NaSa on 2015/10/2.
 */
public interface QuestionService extends BaseService {

    /**
     * 添加问题
     *
     * @param questionJson 问题相关内容，json格式
     * @param token 用户临时token
     * @return
     */
    public AsknowQuestionSet addQuestion(String questionJson, String token);

    /**
     * 设置问题最佳答案
     * @param questionId
     * @param answerId
     * @return
     */
    public int addAdoptAnswer(int questionId,int answerId);

    /**
     * 添加问题同问数
     * @param questionId
     * @param userId
     * @return
     */
    public String updateQuestionAsknum(int questionId,int userId);

    /**
     * 根据关键字查找问题
     *
     * @param pageNo     页码
     * @param pageSize   分页大小
     * @param text       搜索关键字
     * @param properties 其它参数
     * @return AsknowQuestionSet实体列表
     */
    public List<AsknowQuestionSet> findQuestionListBySearch(int pageNo, int pageSize, String text, Map<String, Object> properties);


    /**
     * @param pageNo    页码
     * @param pageSize  分页大小
     * @param properties 其它参数属性(latitude,longitude,blockCode...)
     * @return
     */
    public List<AsknowQuestionSet> getQuestionListByAsktime(int pageNo, int pageSize, Map<String, Object> properties);

    /**
     * @param pageNo    页码
     * @param pageSize  分页大小
     * @param properties 其它参数属性(latitude,longitude,blockCode...)
     * @return
     */
    public List<AsknowQuestionSet> getQuestionListByGeohash(int pageNo, int pageSize, Map<String,Object> properties);


    /**
     * 获取用户的问题列表
     *
     * @param pageNo 页码
     * @param pageSize 页大小
     * @param userId 用户id
     * @param properties 其它参数属性(latitude,longitude...)
     * @return AsknowQuestionSet实体列表
     */
    public List<AsknowQuestionSet> getQuestionListByUserId(int pageNo, int pageSize, int userId, Map<String, Object> properties);



    /**
     * 按问题积分点获取问题列表分页
     *
     * @param pageNo     页码
     * @param pageSize   页大小
     * @param properties 其它参数属性(latitude,longitude...)
     * @return AsknowQuestionSet实体列表
     */
    public List<AsknowQuestionSet> getQuestionListByQuestionPoint(int pageNo, int pageSize, Map<String, Object> properties);

    /**
     * 按同问数获取问题列表分页
     *
     * @param pageNo     页码
     * @param pageSize   页大小
     * @param properties 其它参数属性(latitude,longitude...)
     * @return AsknowQuestionSet实体列表
     */
    public List<AsknowQuestionSet> getQuestionListByAnswernum(int pageNo, int pageSize, Map<String, Object> properties);

    /**
     * 按回答数获取问题列表分页
     *
     * @param pageNo     页码
     * @param pageSize   页大小
     * @param properties 其它参数属性(latitude,longitude...)
     * @return AsknowQuestionSet实体列表
     */
    public List<AsknowQuestionSet> getQuestionListByAsknum(int pageNo, int pageSize, Map<String, Object> properties);

    /**
     * 按问题类别获取问题列表分页
     *
     * @param pageNo       页码
     * @param pageSize     页大小
     * @param classifyName 类别名
     * @param properties   其它参数属性(latitude,longitude...)
     * @return AsknowQuestionSet实体列表
     */
    public List<AsknowQuestionSet> findQuestionPagerByQuestionClassify(int pageNo, int pageSize, String classifyName, Map<String, Object> properties);
}
